Scalable access to shared files in a distributed system

ABSTRACT

Logic may pre-populate cache of compute nodes allocated to a user&#39;s session. Logic may access an image file of a global filesystem, the image file to comprise a first set of one or more files associated with a user session and a second set of one or more files upon which execution of the first set will depend. Logic may store the image file in local data storage of each compute node of a spanning tree of compute nodes allocated for the user session. Logic may unpack the image file based on the data. Logic may configure the local environment of each compute node in the spanning tree to identify a location in local memory of each of the files. And logic may initiate execution of a local filesystem service in each of the compute nodes of the spanning tree.

GOVERNMENT RIGHTS

This invention was made with Government support under contract numberB609815 awarded by the Department of Energy. The Government has certainrights in this invention.

TECHNICAL FIELD

Embodiments described herein are generally directed to shared fileaccess, and more particularly, to scalable access to shared files in adistributed system with cache pre-population.

BACKGROUND

In upcoming exascale computing systems, where there are potentiallyhundreds of thousands of compute nodes, one of the challenges is thedistribution of shared files, or dynamic shared object (DSO) files, suchas executables, libraries, settings, data files, and others across allcompute nodes. A global filesystem might be used for such sharing ofdata; however, the global filesystem creates network and computationalhotspots when multiple compute nodes attempt to access the global sharedfile system at the same time.

To illustrate, a single load of an executable file can result inhundreds of accesses to the global filesystem on just one of those nodesbecause a loader, such as a GNU loader, will fetch all the filedependencies for the executable file prior to execution of theapplication. For instance, execution of the executable file may dependon access to other files such as other executables, libraries, settings,data files, and others. Most processes load the same libraries theydepend on simultaneously. For exascale computing systems, tens ofthousands of nodes may perform the same access pattern concurrently inparallel. Modern supercomputers typically lack node-local storage, andeven large parallel file systems cannot quickly service millions orbillions of small, simultaneous input-output (I/O) requests. As aresult, loading an application can initiate an I/O storm that manifestsmuch like a denial-of-service attack.

Current solutions may assign each file in the global filesystem to amaster node. The master node processes any access to that file and themaster node, as well as all nodes between the requestor and the masternode, cache the file locally throughout the requestor's login session.If a second requestor requests the same file while the file is cachedlocally by the master node or a node between the master node and thesecond requestor, the second requestor can obtain the file from acompute node other than the global filesystem.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A depicts an embodiment of a system including multiple computingnodes of a distributed system interconnected with a communicationnetwork;

FIG. 1B depicts an embodiment of a virtual spanning tree with a branchfactor of two that is created for retrieval of a file in a distributedsystem via a communications network, such as the distributed systemillustrated in FIG. 1A;

FIG. 1C depicts an embodiment of compute nodes for scalable cachepre-population in a distributed system, such as the distributed systemshown in FIG. 1A;

FIG. 1D depicts an embodiment of a bootstrap process, such a computingnode illustrated in FIG. 1A;

FIG. 2 depicts an embodiment of an apparatus to access shared files,such a computing node illustrated in FIG. 1A;

FIGS. 3A-C depict embodiments of flowcharts to access shared files bynodes such as the computing nodes illustrated in FIGS. 1-2;

FIG. 4A depict embodiments of a compute node such as the compute nodesin FIG. 1A;

FIG. 4B depicts an embodiment of a communications architecture; and

FIGS. 5-6 depicts embodiments of a storage medium and a computingplatform of embodiments described herein.

DETAILED DESCRIPTION OF EMBODIMENTS

The following is a detailed description of embodiments depicted in thedrawings. The detailed description covers all modifications,equivalents, and alternatives falling within the appended claims.

A dynamic loader, also called a dynamic linker, is responsible forlocating object code and making it available within a process's addressspace. These actions make the object code's subroutines callable by themain program. Dynamic linking and loading first appeared to share commoncode between processes. For this reason, dynamically linked librariesare also often called shared libraries, and any object files that can belinked and loaded by the dynamic loader are called dynamic sharedobjects (DSOs).

The dynamic loader is implemented as a DSO that is loaded by theoperating system (OS) of a compute node during process start-up, thecombination of which may be referred to as the local filesystem for thecompute node. The OS gives control to the loader, which then loads themain executable's dependent libraries and transfers control to theexecutable's entry point. The executable may re-invoke routines in thedynamic loader to resolve symbols or to load new DSOs during runtime(via routines such as dlopen). The tasks of finding and loading objectcode involve many filesystem operations, and the simultaneous executionof many such operations is not scalable. Loading massively parallelapplications thus has the potential to overwhelm a site-wide sharedfilesystem, which can disrupt other applications running across theentire computing facility.

The dynamic loader performs two types of filesystem operations: queriesto locate a DSO and reads to load its contents into memory. Locating aDSO is necessary because an executable does not specify its dependentlibraries with full path information, but instead provides the names ofthe libraries upon which execution of the executable will depend so thelibraries should be loaded prior to execution. To load a particularlibrary, the dynamic loader searches for files with its name in defaultsystem locations (e.g.,/lib), directories named in the executable (e.g.,RPATHs), or directories named in environment variables such asLD_LIBRARY_PATH. In some embodiments, the filesystem comprises a GNUoperating system and the GNU implementation tests for existence of filesin directories by appending the name of the file to each directory andcalling open on the resulting path.

Once a library has been located, the dynamic loader stores a filesystemconfiguration by mapping it into memory. Each library contains a tableof program headers that describe what parts of the library on diskshould be mapped into memory. A GNU loader uses open and read systemcalls to access the program headers, then memory-map (mmap) system callsto load the bulk of the library into memory.

A system that loads file a from the global filesystem and caches copiesof the files in a spanning tree of compute nodes will be referred to asa filesystem service. While such a filesystem service allows many datafiles to be retrieved ‘seamlessly’ and scalably, many embodimentsfurther address issues such as:

-   -   a. How to scalably startup this filesystem service and/or    -   b. How to address a user's interest in prefetching files into        the local cache before the user session begins executing.

How to scalably startup a filesystem service has a significant impact onperformance since the filesystem service design starts up every time auser's session begins (for security and other architectural reasons). Asa result, starting up the file system service should not be asignificant burden on the global filesystem and startup of thefilesystem service should be scalable.

How to address a user's interest in prefetching files is desirable froma user's perspective. For instance, the user may not want to spendcycles during their allocated user session fetching files into the cacheand/or the files that a user may need in each session are likely not tovary. In such situations, it would make sense to pre-fetch files. Bothsituations present a problem where, to scalably load a user's binary andits shared libraries, the user needs the filesystem service, but thefilesystem service itself must also scalably startup when the service isnot yet available.

Embodiments may comprise methods and arrangements for pre-populating thelocal cache in one or more compute nodes with files for a user sessionin a scalable manner, enabling the rapid launch of system services aswell as user applications and may be particularly advantageous onextremely large compute clusters or distributed systems. Someembodiments may address one of the above issues while other embodimentsaddress both above issues. Note that the term “scalable” herein meansthat image file data is copied (cached) through a spanning tree, todistribute the load of accesses to the files to one or more computenodes through the network and to reduce the number of accesses of theglobal filesystem for the same file. For instance, in severalembodiments, startup of the filesystem service for a user session withmultiple compute nodes may involve a single access of the globalfilesystem to obtain an image file.

Many embodiments include bootstrap logic circuitry to pre-populate localcache of one or more compute nodes with files for a user session. Thenumber of compute nodes may depend on the number of compute nodesallocated to a session or job request for the user. In severalembodiments, a compute node that is referred to as a root node or amaster node, is a node that is designated to access the globalfilesystem to obtain the image file. The image file comprises files tobe preloaded on the compute nodes allocated for the user's session. Thebootstrap logic circuitry may transfer the image file to each of thecompute nodes allocated to the user's session; unpack the image files;configure the local environment of each compute node in a spanning treeto identify a location in local memory of each of a first set of filesand each of a second set of files; initiate execution of a localfilesystem service in each of the compute nodes of the spanning tree;and provide each local filesystem of each of the compute nodes with afilesystem service configuration to identify the first set of files andthe second set of files as a local cache of files from the globalfilesystem. The filesystem service configuration may inform the localfilesystem service of each compute node allocated to a user session thatthe files are locally cached versions of files from the globalfilesystem as well as provide information about the locations of thefiles in the global filesystem.

Several embodiments pre-configure an image file for a user's session.For instance, a helper utility may determine dependencies by searchingthe executables to determine a list of files upon which the execution ofthe executable will depend; inspecting locations such as the RPATH,LD_LIBRARY_PATH, RUNPATH, and system default locations to find thedirectories or locations of the dependencies; appending the dependenciesto the image file; and storing data, such as metadata, for the imagefile so the image file can be properly unpacked and interpreted by thelocal filesystem services of each compute node allocated or associatedwith the user session. Many embodiments also pre-configure a filesystemservice configuration and provide the filesystem service configurationto each of the compute nodes allocated for the user session so the localfilesystem service on each node can identify the files unpacked from theimage file as locally cached versions of files in the global filesystem.

Various embodiments may be designed to address different technicalproblems associated with starting a filesystem on one or more computenodes such as scalably starting up a filesystem service on one or morecompute nodes, scalably pre-populating files that are likely not to varybetween user sessions, scalably pre-populating files that a user wantsavailable during a user session, scalably pre-populating each of thecompute nodes allocated to a user's session, scalably pre-populatingeach compute node in a spanning tree, and/or the like.

Different technical problems such as those discussed above may beaddressed by one or more different embodiments. Embodiments may addressone or more of these problems associated with starting a filesystemservice on one or more compute nodes. For instance, some embodimentsthat address problems associated with scalably starting-up a filesystemservice on one or more compute nodes may do so by one or more differenttechnical means, such as, accessing, by the bootstrap logic circuitry ofa first compute node, an image file of a global filesystem, the imagefile to comprise a first set of one or more files associated with a usersession, a second set of one or more files upon which execution of thefirst set will depend, and data, such as metadata, to describe the imagefile; storing, by the bootstrap logic circuitry, the image file in localdata storage of each compute node of a spanning tree of compute nodes,the spanning tree of compute nodes to comprise one or more compute nodesallocated for the user session; unpacking, by the bootstrap logiccircuitry, the image file based on the metadata in each compute node ofthe spanning tree; configuring, by the bootstrap logic circuitry, thelocal environment of each compute node in the spanning tree to identifya location in local memory of each of the first set of files and each ofthe second set of files; and initiating, by the bootstrap logiccircuitry, execution of a local filesystem service in each of thecompute nodes of the spanning tree.

Further embodiments may address one or more of the problems byinstructing, by the bootstrap logic circuitry, the local filesystemservice in each compute node in the spanning tree, to install afilesystem service configuration to pre-populate a representation oflocal cache comprising the first set of files and the second set offiles; automatically pre-configuring the image file; initiating, by thebootstrap logic circuitry, a bootstrap logic circuitry by executing abootstrap executable; and configuring the LD_LIBRARY_PATH and PATHenvironment variables, and the like.

Several embodiments comprise systems with multiple processor cores suchas central servers, access points, and/or stations (STAs) such asmodems, routers, switches, servers, workstations, netbooks, mobiledevices (Laptop, Smart Phone, Tablet, and the like), and the like. Invarious embodiments, these devices relate to specific applications suchas healthcare, home, commercial office and retail, security, andindustrial automation and monitoring applications, and the like.

FIG. 1A illustrates an example of a distributed system 100 that may berepresentative of various embodiments. In the distributed system 100, acommunication network 101 comprises a plurality of computing devices102-1 to 102-4 and a global filesystem 104. In some embodiments, aconnectivity fabric 103 of communication network 101 may enablecommunication among the computing devices 102-1 to 102-4 and the globalfilesystem 104. In various embodiments, in the context of theapplication layer, the connectivity fabric 103 may enable the use ofapplication-layer send operations to send messages for receipt viaapplication-layer receive operations. In the example of FIG. 1A, thecomputing device 102-1 may be a root compute node or a master computenode for the purpose of accessing the global filesystem 104 for a usersession and the computing devices 102-1 through 102-4 may comprisecompute nodes allocated by a resource manager of the distributed system100 for the user session. The computing device 102-1 may use a sendoperation to send a message 107 to the global filesystem 104 viaconnectivity fabric 103. The global filesystem 104 may use a receiveoperation to receive the message 107 from computing device 102-1 viaconnectivity fabric 103. Note that in other embodiments, the computingdevice 102-1 may connect directly to the global filesystem 104 via theconnectivity fabric 103.

An application layer software executing on the global filesystem 104such as a Portals application programing interface (API), maycommunicate via a network interface such as a network interface card(NIC). With one or more communications, the application layer softwaremay communicate matching criteria, or data, to identify each of one ormore incoming packets that encompass the message 107. In someembodiments, a pre-configuration executable that is a helper utilityexecuting on the computing node 102-1 generates the message 107 and themessage 107 comprises a request to transmit an image file to the globalfilesystem 104 for storage. Upon receipt of the message 107, the globalfilesystem 104 may respond by approving the request. The computing node102-1 may generate one or more messages to transmit the image file andthe global filesystem 104 may receive the image file to store in a localstorage or storage that is accessible by the global filesystem.

The image file may comprise a first set of files and a second set offiles. The first set of files may include one or more executables (suchas binaries) and the second set of files may include each file uponwhich execution of the one or more executables will depend. Executablesare files that the filesystem service may execute for the user session.For example, the first set of files may include one or more executablesto execute for various operations as well as additional executables thatthe one or more executables may call during execution. The second set offiles may include other dynamic shared object (DSO) files such aslibrary files, configuration files, setting or preference files, commonfiles, and/or any other type of file that the first set of files accessduring execution.

In some embodiments, the pre-configuration executable, when executed onprocessing circuitry, may comprise pre-configuration logic circuitry andthe pre-configuration logic circuitry may create the image file. Forexample, the pre-configuration logic circuitry may determine the neededdependencies in the same way a loader program does such as a Linuxloader like GNU loader. In such embodiments, the pre-configuration logiccircuitry inspects local environment locations such as the RPATH,LD_LIBRARY_PATH, RUNPATH, and system default locations. Upon findingdependencies, the pre-configuration logic circuitry may append thesefiles to the image file, and store metadata for the image file so thefiles can be properly unpacked and interpreted by a filesystem servicefor a user session. In several embodiments, the pre-configuration logiccircuitry also creates a filesystem service configuration file, appendsthe filesystem service configuration file to the image file, and updatesthe metadata to include information about the filesystem serviceconfiguration file.

In further embodiments, the pre-configuration logic circuitry alsooptionally appends a third set of one or more files from a user or auser job request that the user wants to have preloaded for the usersession. In some embodiments, the user includes a list of dependenciesfor the third set of one or more files. In some embodiments, thepre-configuration logic circuitry determines the dependencies andappends each of the dependencies for the third set of one or more files.For example, if the user provides a list of binaries and dependenciesassociated with the binaries, the pre-configuration logic circuitry mayverify that the list of dependencies includes all the dependencies uponwhich the one or more binaries on the list may access or call duringexecution.

In other embodiments, a bootstrapping executable that is executing onthe computing device 102-1, to configure bootstrap logic circuitry, maytransmit the message 107 comprising a request to retrieve an image fileassociated with a user session that is stored in the global filesystem104. The global filesystem 104 may, in response to the message 107,retrieve the image file from a local storage of the global filesystem104 and transmit a message to the computing device 102-1 including theimage file from the local storage of the global filesystem 104.

The computing device 102-4 may receive the image file from the globalfilesystem and store the image file in a local storage of the computingdevice 102-1. For instance, the computing device 102-1 may comprise avolatile data storage medium such as random-access memory (RAM) and mayorganize a RAM disk with a portion of or all the RAM. In otherembodiments, the computing node 102-1 may comprise a non-volatilestorage medium such as a hard drive, a solid state drive, an opticaldrive, another storage medium, and/or the like.

After storing the image file locally, the bootstrap logic circuitry ofthe computing device 102-1 may unpack the image file to pre-populate thelocal storage or cache of the computing device 102-1. Thereafter, orconcurrently, the bootstrap logic circuitry may determine a spanningtree of all nodes allocated to the user session associated with theimage file. In some embodiments, a resource manager establishes aspanning tree based on the nodes allocated to the user session. In otherembodiments, the resource manager determines the nodes allocated to theuser session and the bootstrap logic circuitry determines an appropriatespanning tree for the nodes. In further embodiments, an identifierassociated with each of the nodes allocated for the user session maydetermine an order of the nodes for determining the spanning tree,effectively defining the spanning tree based on predefined rules forcreating a spanning tree. In several embodiments, the bootstrap logiccircuitry may assign each of the nodes allocated for the user session aunique identification. In some embodiments, the unique identificationmay establish an order of the nodes, computing devices 102-1 through102-4. Based on the identifications and/or the order of theidentifications, the bootstrap logic circuitry may determine thespanning tree such as the spanning tree 1100 illustrated in FIG. 1B.Note that each node in the spanning tree may be one of the computingdevices 102-2 through 102-4 of the communication network 101.

After determining the spanning tree, the bootstrap logic circuitry maytransfer the image file to each of the nodes allocated for the usersession. For instance, if the allocated nodes include computing devices102-1 through 102-4, the bootstrap logic circuitry may transfer theimage file to each of these nodes, in a scalable manner, and unpack thefiles into a local storage of each of the nodes to establish a directoryof the files, which, in some embodiments, is based on the locations ofthe files in the global filesystem. To transfer the image file to eachof the nodes in a scalable manner, a local bootstrapping executable mayexecute on each of the nodes to transfer the image file from each parentnode to each child node of that parent node in accordance with thespanning tree and so on until the image file is locally stored on eachof the nodes allocated for the user session. The local bootstrappingexecutable may also execute on each of the nodes to unpack the files inthe image file into locations in local memory in accordance with dataincluded in the image file. In other embodiments, the bootstrappingexecutable of the computing device 102-1 may instruct local filesystemsof each of the nodes to unpack the files from the image file.

After the files in the image file are unpacked, the bootstrap logiccircuitry on each node may configure a local environment such as anLD_LIBRARY_PATH via, e.g., an environment variable or an LD preloadcache, to provide a local filesystem service the capability to locatethe files from the image file in the local storage of the node.Thereafter, the bootstrap logic circuitry of the computing device 102-1or the bootstrap logic circuitry on each of the allocated nodes, inaccordance with an instruction from the bootstrap logic circuitry of thecomputing device 102-1, may execute a local filesystem serviceexecutable.

For initialization of the local filesystem service on each of the nodes,the bootstrap logic circuitry of the computing device 102-1 may alsostore a filesystem service configuration at a known location in thelocal storage of each of the allocated nodes, transmit a message with aninstruction to perform a filesystem service configuration that thebootstrap logic circuitry of computing device 102-1 stores locally ineach of the nodes, transmit the filesystem service configuration in amessage to each of the nodes, or the like. The filesystem serviceexecutable on each of the nodes may initialize service with thefilesystem service configuration so that the filesystem service is awareof information about the files locally stored from the image file suchas information about the location of the original files in the globalfilesystem 104. As a result, when a call for a file in the globalfilesystem is made, the local filesystem service of each node canidentify the locally stored version of the file as a cached version ofthe file in the global filesystem.

FIG. 1B depicts an embodiment of a virtual spanning tree 1100, coupledwith a global filesystem 1110, that has a branch factor of two and iscreated for retrieval of a file in a distributed system via acommunications network, such as the distributed system 100 and thecommunication network 101 illustrated in FIG. 1A. The virtual spanningtree 1100 is a loop-free logical topology for the nodes 1115 through1140, such as the computing devices 102-1 through 102-4 illustrated inFIG. 1A, that are allocated for a user session in the distributed system100. The virtual spanning tree 1100 includes one root node or masternode, herein illustrated as node 1115, that is designated for this usersession to perform one or more accesses of the global filesystem 1110.In many embodiments, of the nodes in this spanning tree 1100, only node1115 accesses the global filesystem 1110 to start-up the filesystemservice during this user session. Note that any compute node allocatedfor a user session may be designated as the master node or root node.The spanning tree 1100 depicts a logical organization of the nodes 1115through 1140 and the interconnections may physically be any set ofinterconnections between the nodes 1115 through 1140 and the globalfilesystem 1110 such as the connectivity fabric 103 shown in FIG. 1A.

The arrows illustrate the logical interconnections between the nodes1115 through 1140 for the virtual spanning tree 1100. The root node ormaster node, node 1115, has an arrow to interconnect the node 1115 withthe global filesystem 1110 to indicate that, for this user session, thenode 1115 is the node designated, for the nodes in the spanning tree1100, to communicate with the global filesystem 1110 to store orretrieve the image file during the user session. Note that the usersession occurs during a time frame between the time that the user logsin to start the session and logs out to end the session. The usersession is a time frame during which the user job request for afilesystem service will execute on a number of nodes allocated to theuser for the user session. For example, a resource manager for thedistributed system may allocate a thousand nodes to execute thefilesystem service during the user session. Note that the “filesystemservice” is a coordinated service that local filesystems on each of thenodes 1115 through 1140 provide and that may be defined and scheduled inresponse to a job request from a user of the distributed system.

In some embodiments, selection of the nodes, such as the computingdevices 102-1 through 102-4 shown in FIG. 1A, to populate the spanningtree is based on the nodes that are available during the user session.For instance, the resource manager of the distributed system may selecta thousand nodes from 50 thousand nodes in a distributed system, byselecting the nodes from a sub-set of the nodes in the distributedsystem that are not scheduled for use during the user session. Thedistributed system may be capable of supporting multiple, different usersessions concurrently, and each user session may involve establishmentof a spanning tree. In further embodiments, the resource manager canlogically divide each node of the distributed system into two or moreportions of its resources and each portion can be assigned for useduring different, concurrent users sessions. For example, portions of anode's resources may represent one or more portions of a physicalresource, one or more time divisions for use of a physical resource,and/or a combination of both physical portions and time-divided portionsof the physical resources of the node.

In some embodiments, the resource manager schedules the user sessionbased on a job request from the user. Before the user logs in for a usersession, the resource manager may initiate pre-population of the cacheof the nodes in the spanning tree 1100. In other embodiments, the userlogin at the start of the user session initiates establishment of thespanning tree 1100 and pre-population of the cache of the nodes 1115through 1140 in the spanning tree 1100 with the files in the image file.

In the spanning tree 1100 structure, each node has a single parent nodeexcept for the root node. The highest point on a tree structure iscalled a root node 1115, which does not have a parent node, but servesas the parent or ‘grandparent’ of all the nodes below it (nodes 1120through 1140) in the spanning tree 1100. The height of a node is thetotal number of edges on the path from that node to the furthest leafnode, and the height of the tree is equal to the height of the root node1115, which is two for the spanning tree 1100. A leaf node is a nodewith no children such as the nodes 1125, 1135, and 1140.

Node depth is the distance between a particular node and the root node1115. The root node 1115 has a depth of zero. A child node is a nodeextending from another node. The inverse relationship is that of aparent node. If node C is a child of node A, then node A is the parentof node C.

In the spanning tree 1100, the node 1115 couples with the nodes 1120 and1130, which are considered child nodes (or children) of the node 1115.Conversely, the node 1115 is the parent of the nodes 1120 and 1130. Thenode 1125 is a child of node 1120 and node 1120 is the parent of node1125. Also, the node 1130 is the parent of nodes 1135 and 1140 and thenodes 1135 and 1140 are sibling nodes that are the children of node1130. Note that while this embodiment illustrates the spanning tree witha branch factor of two such that each parent connects with two or lesschild nodes, embodiments are not limited a branching factor of two.Other embodiments may use different branching factors. For instance,embodiments are not limited to one or two child nodes or six totalnodes. Different embodiments may have tens, hundreds, thousands, or morenodes and the nodes may have tens, hundreds, thousands, or more childnodes.

In the present embodiment, the node 1115 may comprise bootstrap logiccircuitry to transfer an image file from the global filesystem 1110 tothe node 1115. In some embodiments, the bootstrap logic circuitry maycomprise a bootstrapping executable that is executing on one or moreprocessors of the node 1115. In other embodiments, the bootstrap logiccircuitry may comprise firmware executing on processing circuitry, anapplication-specific integrated circuit, and/or a state machine. Infurther embodiments, the bootstrap logic circuitry may includeprocessing circuitry, an application-specific integrated circuit, and/ora state machine configured to perform the functionality describedherein.

The bootstrap logic circuitry may also transfer the image file to eachof the nodes 1120 through 1140 to pre-populate a cache of each of thenodes advantageously via a single access of the global filesystem 1110by the node 1115. In several embodiments, the bootstrap logic circuitryof the node 1115 determines the virtual spanning tree 1100 based on thenodes allocated to the user session.

The “cache” of the nodes may refer to a cache-like organization of thefiles from the image file in local storage of each of the nodes 1115through 1140. The filesystem service may access copies of files in thelocal storage of one of the nodes rather than accessing the globalfilesystem 1110 to use or access a file required for execution of afilesystem service during the user session.

Pre-populating the local cache of each node in the spanning tree 1100with one access to the global filesystem through node 1115advantageously allows the process to be scalable. Thus, if any node ofthe spanning tree requires another file or needs to replace a file witha new version of that file, such node can request the file from theparent of such node. For instance, if a file stored locally on node 1125becomes corrupt or node 1125 otherwise requires a new version of thefile, the node 1125 may request the file from the global filesystem1110. The node 1125 routes all requests during the user session throughthe virtual spanning tree 1100 and the filesystem service executing onthe parent node 1120 may intercept the request. Thereafter, thefilesystem service executing on the parent node 1120 may respond to therequest with the file from the local cache of the node 1120.

FIG. 1C an embodiment of compute nodes, apparatuses 1200 and 1250, forscalable cache pre-population in a distributed system, such as thedistributed system shown in FIG. 1A. The apparatus 1200 may be aninitiator device that sends an application-layer message 1207 and theapparatus 1250 may be a target device that receives thatapplication-layer message 1207. As shown in FIG. 1C, both apparatuses1200 and 1250 comprise multiple elements, including respective circuitry1202 and 1252, respective memories 1203 and 1253, and respectivecommunications components 1206 and 1256. The embodiments, however, arenot limited to the type, number, or arrangement of elements shown inthis figure.

The circuitry 1202 and the circuitry 1252 may execute one or moresoftware or firmware implemented modules or components, which mayinclude respective applications 1204 and 1254 that implement a networkprogramming interface. In some embodiments, the circuitry 1202 mayexecute the communication component 1206 as a component of theapplication 1204 to manage communications between apparatus 1200 and oneor more remote devices in accordance with the network programinginterface. In various embodiments, the circuitry 1252 may execute thecommunication component 1256 as a component of the application 1254 tomanage communications between apparatus 1250 and one or more remotedevices. In some embodiments, communication components 1206 and 1256 maybe operative to send and/or receive messages such as the message 1207via a communication network 1290 like communication network 101 of FIG.1A. In various embodiments, communications components 1206 and 1256 mayadditionally comprise logic, circuitry, and/or instructions operative toperform various operations in support of such communications. Examplesof such operations may include—without limitation—selection oftransmission and/or reception parameters and/or timing, packet and/orprotocol data unit (PDU) construction and/or deconstruction, encodingand/or decoding, error detection, and/or error correction.

In the present embodiment, the circuitry 1202 and 1252 may includepre-population logic circuitry 1210 and 1260. The pre-population logiccircuitry 1210 and 1260 may comprise an executable to execute inprocessor circuitry of the circuitry 1202 and 1252, respectively, or maycomprise circuitry configured to perform specific operations related topre-populating a cache in the apparatuses 1200 and 1250, respectively.

In several embodiments, the pre-population logic circuitry 1210 and 1260may automatically pre-configure an image file to store in the globalfilesystem during a pre-configuration phase and retrieve the image filefrom the global filesystem to pre-populate the file cache in therandom-access memory (RAM) disks 1212 and 1262, respectively, during abootstrapping phase. The image file may comprise files required and/orrequested for a user session including file dependencies such asexecutables, libraries, settings, data files, and other files.

If both the apparatuses 1200 and 1250 are compute nodes allocated forthe same user session, one of the apparatuses is designated as the rootnode (apparatus 1200 for this example) and the other apparatus may be achild node of the root node (apparatus 1250 for this example) for thepurposes of storing an image file in a global file system or retrievingan image file from a global file system. In such embodiments, the rootnode (apparatus 1200) may perform the pre-configuration phase and storethe image file in the global filesystem. During the bootstrapping phase,the root node (apparatus 1200) may access the global filesystem toobtain the image file, store the image file in local storage such as theRAM disk 1212 in the memory 1203, and distribute the image file to oneor more child nodes. The child node(s) (apparatus 1250) may includepre-population logic circuitry 1260 to store the image file in the RAMdisk 1262 of the memory 1253 and to distribute the image file to one ormore child nodes of apparatus 1250 and so on until each of the nodesallocated for the user session has the image file in local storage.

After the image file is distributed to each of the nodes allocated forthe user session, the pre-population logic circuitry 1210 of the rootnode (apparatus 1200) may unpack the files from the image file into thelocal RAM disk 1221 based on data such as metadata included in the imagefile and instruct the filesystem in each of the nodes allocated for theuser session to unpack the image file into their local RAM disks basedon data included in the image file. In other embodiments, each parentnode may include pre-population logic circuitry to instruct theirrespective child nodes to unpack files from the image file and to storethe files in their local RAM disks based on data included in the imagefile. In still other embodiments, each node may include pre-populationlogic circuitry to unpack files from the image file in response toreceipt of the image file and to store the files in their local RAMdisks based on data included in the image file.

Once the image file is unpacked, before the image file is unpacked, orwhile the image file is being unpacked in one or more of the nodesallocated to the user session, the pre-population logic circuitry 1210of the root node (apparatus 1200) may instruct the local filesystem foreach of the nodes allocated to the user session to configure a localenvironment (via, e.g., environment variables, an LD preload cache, orthe like) of each compute node in the spanning tree to identify alocation in local memory of each of files unpacked from the image file.For instance, the pre-population logic 1210 may instruct the localfilesystem of each of the nodes allocated for the user session toconfigure local environment variables such as LD_LIBRARY_PATH.Thereafter, the pre-population logic circuitry 1210 may instruct thelocal filesystem service in each node allocated for the user session toinstall a filesystem service configuration to identify the files,unpacked from the image file into a local RAM disk, as a local cache offiles from the global filesystem. Identifying the files as local cacheof files from the global filesystem may involve, e.g., identifying thelocation of the files in the global filesystem.

In the present embodiment, the communication components 1206 and 1256comprise network interfaces 1207 and 1257, respectively. The networkinterfaces 1207 and 1257 may be NICs such as a host channel adapter(HCA), a host fabric interface (HFI), or the like and the network 1290may comprise a switched fabric. In other embodiments, the network 1290may comprise a shared medium and the network interfaces may comprise adifferent type of NIC such as an Ethernet card. In some embodiments, thenetwork interfaces 1207 and 1257 may include more than one type of NICsuch as a NIC for switched fabric and a NIC for a shared medium, thenetwork 1290 may include more than one type of communications medium,and network interfaces 1207 and 1257 may coordinate communications overthe multiple types of media of the network 1290.

The communication component 1206 may receive a message 1207, such as themessage 107 in FIG. 1A, from the application 1204 and deconstruct themessage 1207 into one or more data payloads or data segments such asmultiple portions of the image file. The communication component 1206may provide the one or more data payloads to the network interface 1207for transmission. Thereafter, the network interface 1207 may form orcreate the packets 1214 with the data payloads and transmit the packets1214 to the apparatus 1250 via the network 1290. In other embodiments,the communication component 1206 may aggregate more than one messagessuch as message 1207 as a data payload for transmission via the network1290.

The network interface 1257 of the apparatus 1250 may receive the one ormore incoming packets 1214, each encompassing portions of the message1207 as data payloads. After physical layer and data link layerprocessing, the network interface 1257 may store the incoming packets1214 in receive buffers 1266. Considering that the receive buffers 1266may not receive the incoming packets 1214 in a correct order forreconstruction of the message 1207, the receive buffers 1266 may storethe incoming packets 1214 while the network interface 1257 reconstructsthe message 1207 in the memory 1253 to reconstruct the image file fromthe multiple data payloads.

As part of the receive operation 1255 and prior to receipt of theincoming packets 1214, the application 1254 may communicate with thecommunication component 1256 to identify the incoming message 1207 fromthe apparatus 1200 including one or more memory locations for storage ofthe message 1207.

In various embodiments, either or both of circuitry 1202 and circuitry1252 may comprise circuitry of a processor or logic device, such as acomplex instruction set computer (CISC) microprocessor, a reducedinstruction set computing (RISC) microprocessor, a very long instructionword (VLIW) microprocessor, an x86 instruction set compatible processor,a processor implementing a combination of instruction sets, a multi-coreprocessor such as a dual-core processor or dual-core mobile processor,or any other microprocessor or central processing unit (CPU). In someembodiments, either or both of circuitry 1202 and circuitry 1252 maycomprise circuitry of a dedicated processor, such as a controller, amicrocontroller, an embedded processor, a chip multiprocessor (CMP), aco-processor, a digital signal processor (DSP), a network processor, amedia processor, an input/output (I/O) processor, a media access control(MAC) processor, a radio baseband processor, an application specificintegrated circuit (ASIC), a field programmable gate array (FPGA), aprogrammable logic device (PLD), and so forth. In various embodiments,either or both of circuitry 1202 and circuitry 1252 may be implementedusing any of various commercially available processors,including—without limitation—AMD® Athlon®, Duron® and Opteron®processors; ARM® application, embedded and secure processors; IBM® andMotorola® DragonBall® and PowerPC® processors; IBM and Sony® Cellprocessors; Intel® Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5,Core i7, Itanium®, Pentium®, Xeon®, Xeon Phi® and XScale® processors;and similar processors. The embodiments are not limited in this context.

In various embodiments, apparatuses 1200 and 1250 may comprise orcommunicatively couple with respective memories 1203 and 1253. Either orboth of memories 1203 and 1253 may comprise any machine-readable orcomputer-readable media capable of storing data, including both volatileand non-volatile memory. For example, either or both of memories 1203and 1253 may include read-only memory (ROM), random-access memory (RAM),dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM(SDRAM), static RAM (SRAM), programmable ROM (PROM), erasableprogrammable ROM (EPROM), electrically erasable programmable ROM(EEPROM), flash memory, polymer memory such as ferroelectric polymermemory, ovonic memory, phase change or ferroelectric memory,silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or opticalcards, or any other type of media suitable for storing information. Itis worthy of note that some portion of or the entire memories 1203 and1253 may reside on the same respective integrated circuits as circuitry1202 and circuitry 1252, or alternatively some portion of or the entirememories 1203 and 1253 may reside on integrated circuits or other media,for example hard disk drives, that are external to the respectiveintegrated circuits of circuitry 1202 and circuitry 1252. Althoughmemories 1203 and 1253 are comprised within respective apparatuses 1200and 1250 in FIG. 1C, memories 1203 and 1253 may be external torespective apparatuses 1200 and 1250 in some embodiments.

FIG. 1D depicts an embodiment 1300 of a bootstrap process during abootstrapping phase, such as the bootstrapping phase discussed inconjunction with FIG. 1C. This embodiment 1300 assumes that thepre-configuration phase or equivalent has occurred prior to the start ofthe bootstrapping phase such that there is an image file available inthe global filesystem 1360 that includes the files required by computenodes to perform a user session for the end user 1310. The end user 1310is the user. The end user 1310 may submit a job or simulation 1315 tothe resource manager 1320.

The resource manager 1320 may receive job requests, schedule a usersession for the job, and allocate resources such as a particular numberof nodes to allocate for the user session. In some embodiments, theresource manager 1320 is an application such as a daemon that executesas part of the filesystem on multiple or all nodes of a distributedsystem such as the distributed system 100 illustrated in FIG. 1A. Inother embodiments, the resource manager 1320 may comprise an applicationexecuting on a particular server or two or more particular serverswithin the distributed system. For instance, the resource manager 1320may comprise an application executing on a node that the end user 1310operates to submit the job 1315 or a node that the end user 1310communicates with via a terminal to submit the job or simulation 1315.

In some embodiments, the resource manager 1320 may establish a spanningtree for the nodes allocated to the user session. In other embodiments,the bootstrap logic circuitry of the root node may establish thespanning tree for the nodes allocated for the user session. In someembodiments, the bootstrap logic circuitry of the root node may call theresource manager 1320 to establish a spanning tree for the nodesallocated for the user session.

At the time of the user session or before the user session starts, theresource manager 1320 may start session services for the job 1322 byexecuting a bootstrapper executable 1340. The bootstrapper executable1340 may execute on each node allocated for the user session to formbootstrap logic circuitry on each node. Execution of the bootstrapperexecutable 1340 may initiate the bootstrapping phase, which may beginwith a root node reading the content of an image file 1342 associatedwith the user session from in the global filesystem 1360 and writing theimage file contents 1344 to the local filesystem 1370 of the root node.In other words, the bootstrapper executable 1340 may transfer the imagefile from the global filesystem 1360 into local memory of the root nodesuch as in a RAM disk or other local storage medium of the localfilesystem 1370.

After reading the image file 1342 from the global filesystem 1360, theroot node may distribute the image file to one or more other nodes 1346that are allocated for the user session and a bootstrap executable thatexecutes on each of the other nodes allocated to the user session maywrite the image file 1348 to the local filesystems of remote nodes 1380.Furthermore, the bootstrapper executable 1340 on the root node and thebootstrapper executable on each of the remote nodes may unpack the imagefile contents based in data such as metadata included in the image file.The bootstrapper executable on each node will store the files from theimage file in predefined locations within local storage of the node andset a local environment such as LD_LIBRARY_PATH and PATH 1350.

After or concurrently with unpacking the image file, the bootstrapperexecutable 1340 of the root node may transmit a filesystem serviceconfiguration to nodes allocated for the user session. In someembodiments, the bootstrapper executable on each of the nodes maytransmit the filesystem service configuration to each child node and soon until every node allocated to the user session receives thefilesystem service configuration. Thereafter, the root node maybroadcast or send a group message to every node allocated to the usersession to instruct the local filesystem service to install or otherwiseimplement the filesystem service configuration 1382. In otherembodiments, the bootstrapper executable on each node may store thefilesystem service configuration at a location that the filesystemservice may check at start-up as a default location for configurationfiles 1382.

In still other embodiments, the bootstrapper executable 1340 on the rootnode may write a filesystem service configuration 1351 to the localfilesystem 1370 and broadcast or send a group message, to each of thenodes allocated to the user session, that includes the filesystemservice configuration 1382 and the message may include an instruction toinstall or otherwise implement the filesystem service configuration.

After or during a transmission of the filesystem service configurationto the nodes allocated to the user session, the bootstrapper executable1340 may transmit or broadcast a message, such as the message 107 inFIG. 1A and the message 1207 in FIG. 1C, to initiate execution of thefilesystem service 1352. Once the filesystem service is online 1354, theresource manager 1320 can execute the job 1324 that the end user 1310requested for the user session and notify the end user 1310 of jobcompletion 1326 after the completing the job.

FIG. 2 depicts an embodiment of an apparatus to access shared files,such a computing node illustrated in FIG. 1A. The apparatus comprisespre-population logic circuitry 2000 to pre-populate cache of computenodes with files to perform a user job with a filesystem service.Pre-population, advantageously, allows a scalable start-up of thefilesystem service for a user session.

The pre-population logic circuitry 2000 may comprise a pre-configurationlogic circuitry 2010, which may also be referred to as a helper utility,and bootstrap logic circuitry 2040. The pre-configuration logiccircuitry 2010 may create an image file that includes multiple filessuch as the image files discussed in conjunction with FIGS. 1A-D. Themultiple files may include a first set of files that are executables anda second set of files that are files upon which execution of one or morefiles in the first set depend.

The pre-configuration logic circuitry 2010 may comprise logic circuitryincluding image creation 2012, data generator 2014, dependenciesgatherer 2016, and remote configuration 2018. The image creation 2012may automatically create an image file for a user session in responseto, e.g., installation of a filesystem service or receipt of a first jobrequest for a reoccurring job for that uses the same set of files duringeach user session. In some embodiments, the image creation 2012 maydetermine dependencies associated with the filesystem service byidentifying files called by the filesystem service executable. Forinstance, for a Linux operating system, the filesystem serviceexecutable may include calls to or loads of files that the filesystemservice executable may use during execution such as libraries, settings,data files, other executables, and the like. The image creation 2012 maysearch the filesystem service executable to determine the names of thefiles accessed by the filesystem service executable.

In some embodiments, the image creation 2012 may automatically select animage file associated with a filesystem service and append anyadditional executables that a user requests in a job request or a set offiles or list of files that the user provides either with the jobrequest or otherwise. In other embodiments, the image creation 2012 mayselect an existing image file created by other means that includes thefiles required to perform a filesystem service for a user job request.

The image creation 2012 may call the data generator 2014 to generatedata such as metadata to describe the content of the image file. Forinstance, the image creation 2012 may include several files within theimage file and the data generator 2014 may generate data to include inthe image file or to append to the image file that describes to how tounpack the files from the image file. In some embodiments, the imagecreation 2012 may compress or encode the image file and the datagenerator 2014 may generate data, to include in the image file or toappend to the image file, that describes to how to decompress or decodethe image file. In further embodiments, the image creation 2012 mayinclude a cyclic redundancy code (CRC) for each file or for one or moreof the files and the data generator 2014 may generate data, to includein the image file or to append to the image file, that describes to howto parse the files and the CRC(s) from the image file. In still furtherembodiments, the image creation 2012 may include directories withinwhich to store the files from the image file and the data generator 2014may generate data, to include in the image file or to append to theimage file, that describes to how to determine the directories for thefiles from the image file.

The image creation 2012 may call the dependencies gatherer 2016 to findfiles that are dependencies of the filesystem service executable(s)and/or other executables that the user may indicate for inclusion in theimage file for use during a user session. The image creation 2012 mayappend additional executables indicated by the user as well as filesupon which execution of the additional executables will depend and maycall the data generator 2014 to generate data to include in the imagefile to describe the additional executables and their dependencies.

In some embodiments, the pre-configuration logic circuitry 2010 alsoincludes logic circuitry such as the remote configuration 2018. Theremote configuration 2018 may generate a filesystem serviceconfiguration to include in or with the image file to configure thefilesystem service of each of the nodes allocated for a user session toidentify one or more files from the image file as local cache versionsof files in the global filesystem.

The bootstrap logic circuitry 2040 may perform the bootstrapping phaseof pre-population of the local cache of nodes with files from the globalfilesystem. In some embodiments, the bootstrap logic circuitry 2040 maycomprise a statically linked bootstrapper executable and processingcircuitry to execute the bootstrapper executable. The bootstrap logiccircuitry 2040 may include logic circuitry comprising an image retriever2042, an image unpacker 2044, a configuration establisher 2046, and aremote configuration 2048.

The image retriever 2042 may execute on the root node of a spanning treeof nodes allocated to the user session and may transfer a previouslycreated image file associated with the user session from the globalfilesystem to the root node's local storage such as the memory 2060. Thebootstrap logic circuitry 2040 may then transfer the image file to allnode's local storage in a scalable way. For instance, the bootstraplogic circuitry 2040 of the root node may transfer the image file to thelocal storage of each child node of the root node. Thereafter, thebootstrap logic circuitry 2040 of the one or more child node(s) maytransfer the image file to the local storage of each of their childnodes and so on until each node from the root node through each leafnode includes the image file.

The image unpacker 2044 on each of the nodes allocated to the usersession may then unpack the image file in their local storage as well asthe data into predefined storage locations on each node's local storage.Based on the data, the configuration establisher 2046, on each of thenodes allocated for the user session, may configure the environmentvariables, such as LD_LIBRARY_PATH and PATH, to point to the location ofthe unpacked storage location on each node.

The remote configuration 2048 may receive a filesystem serviceconfiguration with the image file, in the image file, or from the rootnode and store the filesystem service configuration in the localstorage. In some embodiments, the remote configuration 2048 may alsoreceive a command or instruction from the root node to install thefilesystem service configuration and may, in response, install thefilesystem service configuration or instruct the filesystem service toinstall the filesystem service configuration. In several embodiments, aninstruction to the filesystem service to install the filesystem serviceconfiguration may comprise storage of the filesystem serviceconfiguration at a particular location in the local storage of each ofthe nodes allocated to the user session.

Once the files are unpacked from the image file, the bootstrap logiccircuitry 2040 of the root node may initiate the filesystem service andmay instruct each of the nodes allocated to the user session to initiatethe filesystem service. In response to the instruction to initiate thefilesystem service, the bootstrap logic circuitry 2040 of each of thenodes allocated to the user session may initiate the local filesystemservice of the respective nodes. In many embodiments, initiation of thelocal filesystem service may involve execution of a locally storedfilesystem service executable. A loader in the filesystem of each nodemay fetch the necessary files for execution and for loading. Theenvironment variables may cause the filesystem service to access locallycached versions of the files that were unpacked from the image file. Andthe filesystem service configuration may cause the filesystem service toidentify the locally cached versions of the files that were unpackedfrom the image file as cached versions of files located in the globalfilesystem so that the filesystem service does not attempt to load a newversion of dependencies from the global filesystem.

FIGS. 3A-C depict embodiments of flowcharts to access shared files bynodes such as the computing nodes illustrated in FIGS. 1-2. FIG. 3Aillustrates an embodiment of a flowchart 3000 to create or configure animage file to include executable files and their dependencies to executea filesystem service for a user session and to pre-populate the cache ofeach node allocated for the user session to include the executable filesand their dependencies. The flowchart 3000 begins with pre-configurationlogic circuitry configuring, during a pre-configuration phase, an imagefile to contain a first set of files and a second set of files uponwhich execution of the first set will depend as well as data such asmetadata (element 3005). For instance, the first set of files mayinclude one or more executable files that call or access informationfrom the other files. The image file may include each executable fileassociated with the filesystem service and the files called or accessedby each executable file. Note that the data may describe the content ofthe image file as well as directories in which to store files. In someembodiments, the image file includes the data. In other embodiments, thedata is a file associated with the image file that the bootstrap logiccircuitry will obtain along with the image file when accessing theglobal filesystem. After the creation of the image file, thepre-configuration logic circuitry may store the image file in a globalfilesystem.

After the image file is stored in the global filesystem, bootstrap logiccircuitry may pre-populate, during a bootstrapping phase, localfilesystems, of nodes allocated for a user session, with the first setof files and the second set of files (element 3010). Afterpre-populating local filesystems with the files from the image file, thebootstrap logic circuitry may initiate or start-up the filesystemservice associated with the user session.

FIG. 3B illustrates an embodiment of a flowchart 3100 to pre-configurean image file to pre-populate a cache with files for execution of afilesystem service for a user session. The flowchart 3100 begins withloading one or more executables of the first set of files (element3105). In some embodiments, the filesystem service may include one ormore executables and the pre-configuration logic circuitry may load theone or more executables to search the executables. The pre-configurationlogic circuitry may search a dynamic section of the executables todetermine a second set of files that comprise dependencies of the firstset of files (element 3110). The dynamic section of the executables mayinclude, for instance, indications of the dependencies of theexecutables as well as the location of the executables.

After identifying the executables and dependencies of the executables,the pre-configuration logic circuitry may create the image file with thefirst set of files, the second set of files, and data such as metadatato identify one or more locations of the files as well as to describethe format of the image file (element 3115). The data may describedirectories for one or more of the files so that one or more nodes canunpack the image file to store the first and second sets of files indirectories or locations at which the local filesystem service canlocate the files during execution of the local filesystem service forthe user session.

In some embodiments, the pre-configuration logic circuitry mayoptionally add a list of executables provided by a user and includingdependencies of the executables on the list (element 3120) as files toinclude in the image file for the user session. For instance, during theuser session, the file system service may require access to additionalexecutables and their dependencies to perform operations for a jobrequest by the user. The user may provide a list of additionalexecutables and may also include a list of the dependencies for theadditional executables so that the pre-configuration logic circuitry canappend the additional executables and their dependencies to the imagefile. After creation of the image file, the pre-configuration logiccircuitry may store the image file in the global filesystem.

FIG. 3C illustrates an embodiment of a flowchart 3200 to pre-populatecache of local filesystems of the nodes allocated for a user sessionwith files required to perform a filesystem service for a user duringthe user session. The flowchart 3200 begins with executing abootstrapper executable to transfer an image file associated with a usersession from a global filesystem to a local storage of a root node(element 3205). For instance, a resource manager such as the resourcemanager illustrated in FIG. 1D may start a user session by initiatingexecution of the bootstrapper executable in the root node of a spanningtree of nodes allocated for the user session.

When executed via processing circuitry, the bootstrapper executable mayconfigure the processing circuitry to perform operations described inconjunction with FIGS. 1A-1D and/or FIG. 2 for bootstrap logiccircuitry. In some embodiments, the bootstrap logic circuitry maydetermine a spanning tree created by the resource manager of the nodesallocated for the user session (element 3210). In other embodiments, thebootstrap logic circuitry may determine the spanning tree based on nodesallocated for user session.

After determining the spanning tree, the bootstrap logic circuitry ofthe root node may transfer (or transmit or copy) the image file to eachof the nodes in the spanning tree by a scalable method (element 3215).In many embodiments, the scalable method involves transferring the imagefile from each parent node to their respective child nodes to distributethe load amongst the nodes allocated to the user session and to moreefficiently utilize the fabric between nodes allocated to the usersession.

The bootstrap logic circuitry of each node may then unpack, or extract,each of the files in the image file, as well as data such as metadatafrom the image file, into local storage of each of the nodes in thespanning tree (element 3220) to populate a local file cache with filesto execute the filesystem service during the user session. The bootstraplogic circuitry of each node may also configure the local environment(such as local environment variables or LD preload cache) of each nodeof the spanning tree based on the data from the image file (element3225) so the local filesystem service of each node allocated for theuser session can locate the locally cached files for execution of thefilesystem service associated with the user session.

The bootstrap logic circuitry of the root node may also transmit a groupmessage or broadcast a message to provide a filesystem serviceconfiguration to each node in the spanning tree or to identify alocation at which the filesystem service configuration is locally storedin each node (element 3230). The filesystem service configuration mayinclude information to identify the locally stored files from the imagefile as cached versions of files located in the global filesystem.Thereafter, the bootstrap logic circuitry of the root node may instructfilesystem of each node in the spanning tree to initiate the filesystemservice (element 3235). In other embodiments, the bootstrap logiccircuitry of each node may instruct filesystem of each node in thespanning tree to initiate the filesystem service either based on amessage from the root node or based on completion of a task such asconfiguration of the local environment variables or receipt of thefilesystem service configuration.

FIG. 4A illustrates an embodiment of a system 4000 such as the computingnodes 102-1 through 102-5 in FIGS. 1-2 and the apparatuses 1200 and 1250in FIG. 1C. The system 4000 is a computer system with multiple processorcores such as a distributed computing system, supercomputer,high-performance computing system, computing cluster, mainframecomputer, mini-computer, client-server system, personal computer (PC),workstation, server, portable computer, laptop computer, tabletcomputer, handheld device such as a personal digital assistant (PDA), orother device for processing, displaying, or transmitting information.Similar embodiments may comprise, e.g., entertainment devices such as aportable music player or a portable video player, a smart phone or othercellular phone, a telephone, a digital video camera, a digital stillcamera, an external storage device, or the like. Further embodimentsimplement larger scale server configurations. In other embodiments, thesystem 4000 may have a single processor with one core or more than oneprocessor. Note that the term “processor” refers to a processor with asingle core or a processor package with multiple processor cores.

As shown in FIG. 4A, system 4000 comprises a motherboard 4005 formounting platform components. The motherboard 4005 is a point-to-pointinterconnect platform that includes a first processor 4010 and a secondprocessor 4030 coupled via a point-to-point interconnect 4056 such as anUltra Path Interconnect (UPI). In other embodiments, the system 4000 maybe of another bus architecture, such as a multi-drop bus. Furthermore,each of processors 4010 and 4030 may be processor packages with multipleprocessor cores including processor core(s) 4020 and 4040, respectively.While the system 4000 is an example of a two-socket (2S) platform, otherembodiments may include more than two sockets or one socket. Forexample, some embodiments may include a four-socket (4S) platform or aneight-socket (8S) platform. Each socket is a mount for a processor andmay have a socket identifier. Note that the term platform refers to themotherboard with certain components mounted such as the processors 4010and the chipset 4060. Some platforms may include additional componentsand some platforms may only include sockets to mount the processorsand/or the chipset.

In some embodiments, the processor core(s) 4020 and 4042 may comprisepre-population logic circuitry such as the pre-population logiccircuitry 1210, 1260, and 2000 described in conjunction with FIGS. 1Cand 2. The pre-population logic circuitry may comprise processingcircuitry configured for perform the operations described for thepre-population logic circuitry 1210, 1260, and/or 2000 described inconjunction with FIGS. 1C and/or 2.

The first processor 4010 includes an integrated memory controller (IMC)4014 and point-to-point (P-P) interfaces 4018 and 4052. Similarly, thesecond processor 4030 includes an IMC 4034 and P-P interfaces 4038 and4054. The IMC's 4014 and 4034 couple the processors 4010 and 4030,respectively, to respective memories, a memory 4012 and a memory 4032.The memories 4012 and 4032 may be portions of the main memory (e.g., adynamic random-access memory (DRAM)) for the platform (such as the mainmemory 478 in FIG. 4) such as double data rate type 3 (DDR3) or type 4(DDR4) synchronous DRAM (SDRAM). In the present embodiment, the memories4012 and 4032 locally attach to the respective processors 4010 and 4030.In other embodiments, the main memory may couple with the processors viaa bus and shared memory hub.

The processors 4010 and 4030 comprise caches coupled with each of theprocessor core(s) 4020 and 4040, respectively. The first processor 4010couples to a chipset 4060 via P-P interconnects 4052 and 4062 and thesecond processor 4030 couples to a chipset 4060 via P-P interconnects4054 and 4064. Direct Media Interfaces (DMIs) 4057 and 4058 may couplethe P-P interconnects 4052 and 4062 and the P-P interconnects 4054 and4064, respectively. The DMI may be a high-speed interconnect thatfacilitates, e.g., eight Giga Transfers per second (GT/s) such as DMI3.0. In other embodiments, the processors 4010 and 4030 may interconnectvia a bus.

The chipset 4060 may comprise a controller hub such as a platformcontroller hub (PCH). The chipset 4060 may include a system clock toperform clocking functions and include interfaces for an I/O bus such asa universal serial bus (USB), peripheral component interconnects (PCIs),serial peripheral interconnects (SPIs), integrated interconnects (I2Cs),and the like, to facilitate connection of peripheral devices on theplatform. In other embodiments, the chipset 4060 may comprise more thanone controller hub such as a chipset with a memory controller hub, agraphics controller hub, and an input/output (I/O) controller hub.

In the present embodiment, the chipset 4060 couples with a trustedplatform module (TPM) 4072 and the UEFI, BIOS, Flash component 4074 viaan interface (I/F) 4070. The TPM 4072 is a dedicated microcontrollerdesigned to secure hardware by integrating cryptographic keys intodevices. The UEFI, BIOS, Flash component 4074 may provide pre-boot code.

Furthermore, chipset 4060 includes an I/F 4066 to couple chipset 4060with a high-performance graphics engine, graphics card 4065 and a hostfabric interface (HFI) 4067. The I/F 4066 may be, for example, aPeripheral Component Interconnect-enhanced (PCI-e). The HFI 4067 mayinclude a network interface to couple the system 4000 with aconnectivity fabric such as the connectivity fabric 103 in FIG. 1A. TheHFI 4067 may be a network interface card (NIC) coupled with the system4000 or may comprise a portion of an integrated circuit of the chipset4060 or of a processor such as the processor 4010 and/or the processor4030. The HFI 4067 may interface the system 4000 with other systems orstorage devices such as the computing devices 102-1 through 102-5illustrated in FIG. 1A via a connectivity fabric such as Fibre Channelor the like.

Various I/O devices 4092 couple to the bus 4081, along with a bus bridge4080 which couples the bus 4081 to a second bus 4091 and an I/F 4068that connects the bus 4081 with the chipset 4060. In one embodiment, thesecond bus 4091 may be a low pin count (LPC) bus. Various devices maycouple to the second bus 4091 including, for example, a keyboard 4082, amouse 4084, communication devices 4086, and a data storage unit 4088that may store code. Furthermore, an audio I/O 4090 may couple to secondbus 4091. Many of the I/O devices 4092, the communication devices 4086,and the data storage unit 4088 may reside on the motherboard 4005 whilethe keyboard 4082 and the mouse 4084 may be add-on peripherals. In otherembodiments, some or all the I/O devices 4092, communication devices4086, and the data storage unit 4088 are add-on peripherals and do notreside on the motherboard 4005. In some embodiments, the data storageunit 4088 may comprise a pre-population executable that can execute of aprocessor core such as the processor core(s) 4022 and 4042 to configurepre-population logic circuitry 4022 and 4042.

FIG. 4B illustrates a block diagram of an exemplary communicationsarchitecture 4100 suitable for implementing various embodiments aspreviously described. The communications architecture 4100 includesvarious common communications elements, such as a transmitter, receiver,transceiver, radio, network interface, baseband processor, antenna,amplifiers, filters, power supplies, and so forth.

As shown in FIG. 4B, the communications architecture 4100 comprisesincludes one or more clients 4102 and servers 4104. The clients 4102 andthe servers 4104 operatively connect to one or more respective clientdata stores 4108 and server data stores 4110 to store information localto the respective clients 4102 and servers 4104, such as cookies and/orassociated contextual information. Any one of clients 4102 and/orservers 4104 may implement one or more of apparatus 1200 and apparatus1250 of FIG. 1D, apparatus 2000 of FIG. 2, apparatus 4000 of FIG. 4A,flowchart 3000 of FIG. 3A, flowchart 3100 of FIG. 3B, flowchart 3200 ofFIG. 3C, storage medium 5000 of FIG. 5, and computing platform 6000 ofFIG. 6. In various embodiments, either or both of apparatuses 1200 and1250 of FIG. 1D may comprise one or more switching devices and/orrouting devices in the communication framework 4106.

The clients 4102 and the servers 4104 may communicate informationbetween each other using a communication framework 4106. Thecommunications framework 4106 may implement any well-knowncommunications techniques and protocols. The communications framework4106 may be a packet-switched network (e.g., public networks such as theInternet, private networks such as an enterprise intranet, and soforth), a circuit-switched network (e.g., the public switched telephonenetwork), or a combination of a packet-switched network and acircuit-switched network (with suitable gateways and translators).

The communications framework 4106 may implement various networkinterfaces arranged to accept, communicate, and connect to acommunications network. A network interface may be a specialized form ofan input output interface. Network interfaces may employ connectionprotocols including without limitation direct connect, Ethernet (e.g.,thick, thin, twisted pair 10/100/1000 Base T, and the like), token ring,wireless network interfaces, cellular network interfaces, IEEE 802.11a-xnetwork interfaces, IEEE 802.16 network interfaces, IEEE 802.20 networkinterfaces, and the like. Further, multiple network interfaces mayengage with various communications network types. For example, multiplenetwork interfaces may facilitate communication over broadcast,multicast, and unicast networks. Should processing requirements dictatea greater amount speed and capacity, distributed network controllerarchitectures may pool, load balance, and otherwise increase thecommunicative bandwidth required by clients 4102 and the servers 4104. Acommunications network may be any one and the combination of wiredand/or wireless networks including without limitation a directinterconnection, a secured custom connection, a private network (e.g.,an enterprise intranet), a public network (e.g., the Internet), aPersonal Area Network (PAN), a Local Area Network (LAN), a MetropolitanArea Network (MAN), an Operating Missions as Nodes on the Internet(OMNI), a Wide Area Network (WAN), a wireless network, a cellularnetwork, and other communications networks.

FIG. 5 illustrates an example of a storage medium 5000 to storepre-population logic such as one or more pre-population executables.Storage medium 5000 may comprise an article of manufacture. In someexamples, storage medium 5000 may include any non-transitory computerreadable medium or machine-readable medium, such as an optical, magneticor semiconductor storage. Storage medium 5000 may store diverse types ofcomputer executable instructions, such as instructions to implementlogic flows and/or techniques described herein. Examples of a computerreadable or machine-readable storage medium may include any tangiblemedia capable of storing electronic data, including volatile memory ornon-volatile memory, removable or non-removable memory, erasable ornon-erasable memory, writeable or re-writeable memory, and so forth.Examples of computer executable instructions may include any suitabletype of code, such as source code, compiled code, interpreted code,executable code, static code, dynamic code, object-oriented code, visualcode, and the like.

FIG. 6 illustrates an example computing platform 6000 such as thecomputing devices 102-1 through 102-5 in FIGS. 1-2, apparatuses 1200 and1250 in FIG. 1D, apparatus 2000 in FIG. 2, and apparatus 4000 in FIG.4A. In some examples, as shown in FIG. 6, computing platform 6000 mayinclude a processing component 6010, other platform components or acommunications interface 6030. According to some examples, computingplatform 6000 may be a computing device such as a server in a systemsuch as a data center or server farm that supports a manager orcontroller for managing configurable computing resources as mentionedabove. Furthermore, the communications interface 6030 may comprise awake-up radio (WUR) and may be capable of waking up a main radio of thecomputing platform 6000.

According to some examples, processing component 6010 may executeprocessing operations or logic for apparatus 6015 described herein.Processing component 6010 may include various hardware elements,software elements, or a combination of both. Examples of hardwareelements may include devices, logic devices, components, processors,microprocessors, circuits, processor circuits, circuit elements (e.g.,transistors, resistors, capacitors, inductors, and so forth), integratedcircuits, application specific integrated circuits (ASIC), programmablelogic devices (PLD), digital signal processors (DSP), field programmablegate array (FPGA), memory units, logic gates, registers, semiconductordevice, chips, microchips, chip sets, and so forth. Examples of softwareelements, which may reside in the storage medium 6020, may includesoftware components, programs, applications, computer programs,application programs, device drivers, system programs, softwaredevelopment programs, machine programs, operating system software,middleware, firmware, software modules, routines, subroutines,functions, methods, procedures, software interfaces, application programinterfaces (API), instruction sets, computing code, computer code, codesegments, computer code segments, words, values, symbols, or anycombination thereof. While discussions herein describe elements ofembodiments as software elements and/or hardware elements, decisions toimplement an embodiment using hardware elements and/or software elementsmay vary in accordance with any number of design considerations orfactors, such as desired computational rate, power levels, heattolerances, processing cycle budget, input data rates, output datarates, memory resources, data bus speeds and other design or performanceconstraints.

In some examples, other platform components 6025 may include commoncomputing elements, such as one or more processors, multi-coreprocessors, co-processors, memory units, chipsets, controllers,peripherals, interfaces, oscillators, timing devices, video cards, audiocards, multimedia input/output (I/O) components (e.g., digitaldisplays), power supplies, and so forth. Examples of memory units mayinclude without limitation various types of computer readable andmachine readable storage media in the form of one or more higher speedmemory units, such as read-only memory (ROM), random-access memory(RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronousDRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasableprogrammable ROM (EPROM), electrically erasable programmable ROM(EEPROM), flash memory, polymer memory such as ferroelectric polymermemory, ovonic memory, phase change or ferroelectric memory,silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or opticalcards, an array of devices such as Redundant Array of Independent Disks(RAID) drives, solid state memory devices (e.g., USB memory), solidstate drives (SSD) and any other type of storage media suitable forstoring information.

In some examples, communications interface 6030 may include logic and/orfeatures to support a communication interface. For these examples,communications interface 6030 may include one or more communicationinterfaces that operate according to various communication protocols orstandards to communicate over direct or network communication links.Direct communications may occur via use of communication protocols orstandards described in one or more industry standards (includingprogenies and variants) such as those associated with the PCI Expressspecification. Network communications may occur via use of communicationprotocols or standards such as those described in one or more Ethernetstandards promulgated by the Institute of Electrical and ElectronicsEngineers (IEEE). For example, one such Ethernet standard may includeIEEE 802.3-2012, Carrier sense Multiple access with Collision Detection(CSMA/CD) Access Method and Physical Layer Specifications, Published inDecember 2012 (hereinafter “IEEE 802.3”). Network communication may alsooccur according to one or more OpenFlow specifications such as theOpenFlow Hardware Abstraction API Specification. Network communicationsmay also occur according to Infiniband Architecture Specification,Volume 1, Release 1.3, published in March 2015 (“the InfinibandArchitecture specification”).

Computing platform 6000 may be part of a computing device that may be,for example, a server, a server array or server farm, a web server, anetwork server, an Internet server, a work station, a mini-computer, amain frame computer, a supercomputer, a network appliance, a webappliance, a distributed computing system, multiprocessor systems,processor-based systems, or combination thereof. Accordingly, variousembodiments of the computing platform 6000 may include or excludefunctions and/or specific configurations of the computing platform 6000described herein.

The components and features of computing platform 6000 may comprise anycombination of discrete circuitry, ASICs, logic gates and/or single chiparchitectures. Further, the features of computing platform 6000 maycomprise microcontrollers, programmable logic arrays and/ormicroprocessors or any combination of the foregoing where suitablyappropriate. Note that hardware, firmware and/or software elements maybe collectively or individually referred to herein as “logic”.

One or more aspects of at least one example may comprise representativeinstructions stored on at least one machine-readable medium whichrepresents various logic within the processor, which when read by amachine, computing device or system causes the machine, computing deviceor system to fabricate logic to perform the techniques described herein.Such representations, known as “IP cores” may be stored on a tangible,machine readable medium and supplied to various customers ormanufacturing facilities to load into the fabrication machines that makethe logic or processor.

Some examples may include an article of manufacture or at least onecomputer-readable medium. A computer-readable medium may include anon-transitory storage medium to store logic. In some examples, thenon-transitory storage medium may include one or more types ofcomputer-readable storage media capable of storing electronic data,including volatile memory or non-volatile memory, removable ornon-removable memory, erasable or non-erasable memory, writeable orre-writeable memory, and so forth. In some examples, the logic mayinclude various software elements, such as software components,programs, applications, computer programs, application programs, systemprograms, machine programs, operating system software, middleware,firmware, software modules, routines, subroutines, functions, methods,procedures, software interfaces, API, instruction sets, computing code,computer code, code segments, computer code segments, words, values,symbols, or any combination thereof.

According to some examples, a computer-readable medium may include anon-transitory storage medium to store or maintain instructions thatwhen executed by a machine, computing device or system, cause themachine, computing device or system to perform methods and/or operationsin accordance with the described examples. The instructions may includeany suitable type of code, such as source code, compiled code,interpreted code, executable code, static code, dynamic code, and thelike. The instructions may be implemented according to a predefinedcomputer language, manner, or syntax, for instructing a machine,computing device or system to perform a certain function. Theinstructions may be implemented using any suitable high-level,low-level, object-oriented, visual, compiled and/or interpretedprogramming language.

As used herein, the term “circuitry” may refer to, be part of, orinclude an Application Specific Integrated Circuit (ASIC), an electroniccircuit, a processor (shared, dedicated, or group), and/or memory(shared, dedicated, or group) that execute one or more software orfirmware programs, a combinational logic circuit, and/or other suitablehardware components that provide the described functionality.

Various examples may be implemented using hardware elements, softwareelements, or a combination of both. In some examples, hardware elementsmay include devices, components, processors, microprocessors, circuits,circuit elements (e.g., transistors, resistors, capacitors, inductors,and so forth), integrated circuits, application specific integratedcircuits (ASIC), programmable logic devices (PLD), digital signalprocessors (DSP), field programmable gate array (FPGA), memory units,logic gates, registers, semiconductor device, chips, microchips, chipsets, and so forth. In some examples, software elements may includesoftware components, programs, applications, computer programs,application programs, system programs, machine programs, operatingsystem software, middleware, firmware, software modules, routines,subroutines, functions, methods, procedures, software interfaces,application program interfaces (API), instruction sets, computing code,computer code, code segments, computer code segments, words, values,symbols, or any combination thereof. Determining whether an example isimplemented using hardware elements and/or software elements may vary inaccordance with any number of factors, such as desired computationalrate, power levels, heat tolerances, processing cycle budget, input datarates, output data rates, memory resources, data bus speeds and otherdesign or performance constraints, as desired for a givenimplementation.

Some examples may be described using the expression “in one example” or“an example” along with their derivatives. These terms mean that aparticular feature, structure, or characteristic described in connectionwith the example is included in at least one example. The appearances ofthe phrase “in one example” in various places in the specification arenot necessarily all referring to the same example.

Some examples may be described using the expression “coupled” and“connected” along with their derivatives. These terms are notnecessarily intended as synonyms for each other. For example,descriptions using the terms “connected” and/or “coupled” may indicatethat two or more elements are in direct physical or electrical contactwith each other. The term “coupled,” however, may also mean that two ormore elements are not in direct contact with each other, but yet stillco-operate or interact with each other.

In addition, in the foregoing Detailed Description, it can be seen thatvarious features are grouped together in a single example for thepurpose of streamlining the disclosure. This method of disclosure is notto be interpreted as reflecting an intention that the claimed examplesrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, inventive subject matter lies in lessthan all features of a single disclosed example. Thus, the followingclaims are hereby incorporated into the Detailed Description, with eachclaim standing on its own as a separate example. In the appended claims,the terms “including” and “in which” are used as the plain-Englishequivalents of the respective terms “comprising” and “wherein,”respectively. Moreover, the terms “first,” “second,” “third,” and soforth, are used merely as labels, and are not intended to imposenumerical requirements on their objects.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code to reduce the number of times code must be retrievedfrom bulk storage during execution. The term “code” covers a broad rangeof software components and constructs, including applications, drivers,processes, routines, methods, modules, firmware, microcode, andsubprograms. Thus, the term “code” may be used to refer to anycollection of instructions which, when executed by a processing system,perform a desired operation or operations.

Logic circuitry, devices, and interfaces herein described may performfunctions implemented in hardware and also implemented with codeexecuted on one or more processors. Logic circuitry refers to thehardware or the hardware and code that implements one or more logicalfunctions. Circuitry is hardware and may refer to one or more circuits.Each circuit may perform a particular function. A circuit of thecircuitry may comprise discrete electrical components interconnectedwith one or more conductors, an integrated circuit, a chip package, achip set, memory, or the like. Integrated circuits include circuitscreated on a substrate such as a silicon wafer and may comprisecomponents. And integrated circuits, processor packages, chip packages,and chipsets may comprise one or more processors.

Processors may receive signals such as instructions and/or data at theinput(s) and process the signals to generate the at least one output.While executing code, the code changes the physical states andcharacteristics of transistors that make up a processor pipeline. Thephysical states of the transistors translate into logical bits of onesand zeros stored in registers within the processor. The processor cantransfer the physical states of the transistors into registers andtransfer the physical states of the transistors to another storagemedium.

A processor may comprise circuits to perform one or more sub-functionsimplemented to perform the overall function of the processor. Oneexample of a processor is a state machine or an application-specificintegrated circuit (ASIC) that includes at least one input and at leastone output. A state machine may manipulate the at least one input togenerate the at least one output by performing a predetermined series ofserial and/or parallel manipulations or transformations on the at leastone input.

The logic as described above may be part of the design for an integratedcircuit chip. The chip design is created in a graphical computerprogramming language, and stored in a computer storage medium or datastorage medium (such as a disk, tape, physical hard drive, or virtualhard drive such as in a storage access network). If the designer doesnot fabricate chips or the photolithographic masks used to fabricatechips, the designer transmits the resulting design by physical means(e.g., by providing a copy of the storage medium storing the design) orelectronically (e.g., through the Internet) to such entities, directlyor indirectly. The stored design is then converted into the appropriateformat (e.g., GDSII) for the fabrication.

The resulting integrated circuit chips can be distributed by thefabricator in raw wafer form (that is, as a single wafer that hasmultiple unpackaged chips), as a bare die, or in a packaged form. In thelatter case, the chip is mounted in a single chip package (such as aplastic carrier, with leads that are affixed to a motherboard or otherhigher-level carrier) or in a multichip package (such as a ceramiccarrier that has either or both surface interconnections or buriedinterconnections). In any case, the chip is then integrated with otherchips, discrete circuit elements, and/or other signal processing devicesas part of either (a) an intermediate product, such as a processorboard, a server platform, or a motherboard, or (b) an end product.

Several embodiments have one or more potentially advantages effects. Forinstance, pre-populating cache of compute nodes allocated to a user'ssession advantageously enables filesystem/user session services (whichare on the critical path in terms of time to solution in HPC) to startupas quickly as possible while using minimal storage and network resourceson the cluster or distributed system. This enables efficient use ofcostly system resources, speeds up solution time for customers, andensures HPC solutions meet and exceed customer's needs. Automaticallycreating an image file with a first set of files for a user's session orjob and a second set of files with files upon which the first set offiles depend for execution advantageously enables system/user sessionservices to startup as quickly as possible while using minimal storageand network resources on the cluster. Automatically creating an imagefile with a first set of files for a user's session or job and a secondset of files with files upon which the first set of files depend forexecution and appending user designated files advantageously enablessystem/user session services to startup as quickly as possible whileusing minimal storage and network resources on the cluster. Executing abootstrapper executable to initiate bootstrapper logic circuitryadvantageously enables system/user session services to startup asquickly as possible while using minimal storage and network resources onthe cluster. Executing a bootstrapper executable to transfer the imagefile to all compute node's local storage in a spanning tree associatedwith the user's session or job to ensure the distribution of this fileis scalable advantageously enables system/user session services tostartup as quickly as possible while using minimal storage and networkresources on the cluster. Unpacking the image file and metadata intopredefined storage locations on each compute node's local storage of thespanning tree advantageously enables system/user session services tostartup as quickly as possible while using minimal storage and networkresources on the cluster. Configuring local path environment variablessuch as the LD_LIBRARY_PATH and PATH environment variables to point tothe location of the unpacked storage location on each nodeadvantageously enables system/user session services to startup asquickly as possible while using minimal storage and network resources onthe cluster. Initiating a filesystem service executable advantageouslyenables system/user session services to startup as quickly as possiblewhile using minimal storage and network resources on the cluster.Providing a filesystem service configuration advantageously enablessystem/user session services to startup as quickly as possible whileusing minimal storage and network resources on the cluster.

EXAMPLES OF FURTHER EMBODIMENTS

The following examples pertain to further embodiments. Specifics in theexamples may be used anywhere in one or more embodiments.

Example 1 is an apparatus to access shared files, the apparatuscomprising: memory: and logic circuitry to: access an image file of aglobal filesystem, the image file comprising a first set of one or morefiles associated with a user session and a second set of one or morefiles, the execution of the first set depending on the second set of oneor more files; store the image file in local data storage of more thanone compute node of a spanning tree, the spanning tree of compute nodescomprising one or more compute nodes associated with the user session,wherein the image file is unpacked into a plurality of unpacked filesbased on data for the image file in the more than one compute nodes ofthe spanning tree, the unpacked filed comprising the first set of onemore files and the second set of one more files; configure a localfilesystem service environment of the more than one compute node in thespanning tree, wherein the configured local file service environment isto identify a location in local memory of each of the unpacked files;and initiate, after the image file is unpacked, execution of the localfilesystem service in the more than one compute nodes of the spanningtree. In Example 2, the apparatus of Example 1, wherein the logiccircuitry is configured to instruct the local filesystem service in eachcompute node in the spanning tree, to install a filesystem serviceconfiguration to identify the first set of files and the second set offiles as a local cache of the image file from the global filesystem. InExample 3, the apparatus of Example 2, wherein the logic circuitry isconfigured to store the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration at the predetermined location. InExample 4, the apparatus of Example 2, wherein the logic circuitry isconfigured to provide a location of the filesystem service configurationin a command. In Example 5, the apparatus of Example 2, wherein thelogic circuitry is configured to provide the filesystem serviceconfiguration within a command. In Example 6, the apparatus of Example1, wherein the logic circuitry is configured to initiate a bootstraplogic circuitry by execution of a bootstrapper executable on theunpacked files. In Example 7, the apparatus of Example 1, wherein thelogic circuitry is configured to configure the LD_Library_Path and Pathenvironment variables. In Example 8, the apparatus of Example 1, whereinthe logic circuitry is configured to execute a filesystem serviceexecutable. In Example 9, the apparatus of Example 1, wherein the localdata storage comprises a random-access memory (RAM) disk. In Example 10,the apparatus of Example 1, wherein the one or more compute nodescomprise nodes of a high-performance computing (HPC) system. In Example11, the apparatus of Example 1, wherein the logic circuitry isconfigured to automatically pre-configure the image file, whereinautomatic pre-configuration creates the image file and correspondingdata for the image file. In Example 12, the apparatus of Example 1,wherein the logic circuitry is configured to automatically determinefile dependencies by inspection of RPath, LD_Library_Path, RunPath, andsystem default locations and to optionally append user-identified filesto the image file.

Example 13 is a system to access shared files, the system comprising amemory comprising a dynamic random-access memory coupled with aprocessor of the bootstrap logic circuitry in accordance with any one ofExamples 1-12.

Example 14 is a method to access shared files, the method comprising:accessing, by a bootstrap logic circuitry of a first compute nodeassociated with a user session, an image file of a global filesystem,the image file comprising a first set of one or more files associatedwith the user session and a second set of one or more files, theexecution of the first set depending on the second set of one or morefiles; storing, by the bootstrap logic circuitry, the image file inlocal data storage of more than one compute node of a spanning tree, thespanning tree of compute nodes comprising one or more compute nodesassociated with the user session, wherein the image file is unpackedinto a plurality of unpacked files based on data for the image file inthe more than one compute nodes of the spanning tree, the unpacked filedcomprising the first set of one more files and the second set of onemore files; configuring, by the bootstrap logic circuitry, a localfilesystem service environment of the more than one compute node in thespanning tree, wherein the configured local file service environment isto identify a location in local memory of each of the unpacked files;and initiating, by the bootstrap logic circuitry after the image file isunpacked, execution of the local filesystem service in the more than onecompute nodes of the spanning tree. In Example 15, the method of Example14, further comprising instructing, by the bootstrap logic circuitry,the local filesystem service in each compute node in the spanning tree,to install a filesystem service configuration to identify the first setof files and the second set of files as a local cache of the image filefrom the global filesystem. In Example 16, the method of Example 15,wherein instructing, by the bootstrap logic circuitry, the localfilesystem service to install a filesystem service configurationcomprises storing the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration if located at the predeterminedlocation. In Example 17, the method of Example 15, wherein instructing,by the bootstrap logic circuitry, the local filesystem service toinstall a filesystem service configuration comprises providing alocation of the filesystem service configuration in a command line. InExample 18, the method of Example 15, wherein instructing, by thebootstrap logic circuitry, the local filesystem service to install afilesystem service configuration comprises providing the filesystemservice configuration within a command. In Example 19, the method ofExample 14, further comprising initiating the bootstrap logic circuitryby execution of a bootstrapper executable on the unpacked files. InExample 20, the method of Example 14, wherein configuring, by thebootstrap logic circuitry, the local environment comprises configuringthe LD_Library_Path and Path environment variables. In Example 21, themethod of Example 14, wherein initiating, by the bootstrap logiccircuitry, execution of the local filesystem comprises executing afilesystem service executable. In Example 22, the method of Example 14,wherein the local data storage comprises a random-access memory (RAM)disk. In Example 23, the method of Example 14, wherein the one or morecompute nodes comprise nodes of a high performance computing (HPC)system. In Example 24, the method of Example 14, further comprisingautomatically pre-configuring the image file, wherein automaticpre-configuration creates the image file and corresponding data for theimage file. In Example 25, the method of Example 14, further comprisingautomatically, by a pre-configuration logic circuitry, determining filedependencies by inspection of RPath, LD_Library_Path, RunPath, andsystem default locations and to optionally append user-identified filesto the image file.

Example 26 is a system to access shared files, the system comprising:more than one compute nodes coupled, wherein one of the compute nodescomprises a functional block to: access an image file of a globalfilesystem, the image file comprising a first set of one or more filesassociated with a user session and a second set of one or more files,the execution of the first set depending on the second set of one ormore files; store the image file in local data storage of more than onecompute node of a spanning tree, the spanning tree of compute nodescomprising one or more compute nodes associated with the user session,wherein the image file is unpacked into a plurality of unpacked filesbased on data for the image file in the more than one compute nodes ofthe spanning tree, the unpacked filed comprising the first set of onemore files and the second set of one more files; configure a localfilesystem service environment of the more than one compute node in thespanning tree, wherein the configured local file service environment isto identify a location in local memory of each of the unpacked files;and initiate, after the image file is unpacked, execution of the localfilesystem service in the more than one compute nodes of the spanningtree. In Example 27, the system of Example 26, wherein the functionalblock is configured to instruct the local filesystem service in eachcompute node in the spanning tree, to install a filesystem serviceconfiguration to identify the first set of files and the second set offiles as local cache of the image file from the global filesystem. InExample 28, the system of Example 27, wherein the functional block isconfigured to store the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration at the predetermined location. InExample 29, the system of Example 27, wherein the functional block isconfigured to provide a location of the filesystem service configurationin a command. In Example 30, the system of Example 27, wherein thefunctional block is configured to provide the filesystem serviceconfiguration within a command. In Example 31, the system of Example 26,wherein the functional block is configured to initiate a bootstrap logiccircuitry by execution of a bootstrapper executable on the unpackedfiles. In Example 32, the system of Example 26, wherein the functionalblock is configured to configure the LD_Library_Path and Pathenvironment variables. In Example 33, the system of Example 26, whereinthe functional block is configured to execute a filesystem serviceexecutable. In Example 34, the system of Example 26, wherein the localdata storage comprises a random-access memory (RAM) disk. In Example 35,the system of Example 26, wherein the one or more compute nodes comprisenodes of a high-performance computing (HPC) system. In Example 36, thesystem of Example 26, wherein the functional block is configured toautomatically pre-configure the image file, wherein automaticpre-configuration creates the image file and corresponding data for theimage file. In Example 37, the system of Example 26, wherein thefunctional block is configured to automatically determine filedependencies by inspection of RPath, LD_Library_Path, RunPath, andsystem default locations and to optionally append user-identified filesto the image file.

Example 38 is a non-transitory machine-readable medium containinginstructions, which when executed by a processor, cause the processor toperform operations, the operations to: access, by a bootstrap logiccircuitry of a first compute node associated with a user session, animage file of a global filesystem, the image file comprising a first setof one or more files associated with the user session and a second setof one or more files, the execution of the first set depending on thesecond set of one or more files; store, by the bootstrap logiccircuitry, the image file in local data storage of more than one computenode of a spanning tree, the spanning tree of compute nodes comprisingone or more compute nodes associated with the user session, wherein theimage file is unpacked into a plurality of unpacked files based on datafor the image file in the more than one compute nodes of the spanningtree, the unpacked filed comprising the first set of one more files andthe second set of one more files; configure, by the bootstrap logiccircuitry, a local filesystem service environment of the more than onecompute node in the spanning tree, wherein the configured local fileservice environment is to identify a location in local memory of each ofthe unpacked files; and initiate, by the bootstrap logic circuitry afterthe image file is unpacked, execution of the local filesystem service inthe more than one compute nodes of the spanning tree. In Example 39, themachine-readable medium of Example 38, further comprising operations toinstruct, by the bootstrap logic circuitry, the local filesystem servicein each compute node in the spanning tree, to install a filesystemservice configuration to identify the first set of files and the secondset of files as a local cache of the image file from the globalfilesystem. In Example 40, the machine-readable medium of Example 38,wherein operations to instruct, by the bootstrap logic circuitry, thelocal filesystem service to install a filesystem service configurationcomprises operations to store the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration if located at the predeterminedlocation. In Example 41, the machine-readable medium of Example 38,wherein operations to instruct, by the bootstrap logic circuitry, thelocal filesystem service to install a filesystem service configurationcomprises operations to provide a location of the filesystem serviceconfiguration in a command line. In Example 42, the machine-readablemedium of Example 38, wherein operations to instruct, by the bootstraplogic circuitry, the local filesystem service to install a filesystemservice configuration comprises operations to provide the filesystemservice configuration within a command. In Example 43, themachine-readable medium of Example 38, further comprising operations toinitiate the bootstrap logic circuitry by execution of a bootstrapperexecutable on the unpacked files. In Example 44, the machine-readablemedium of Example 38, wherein operations to configure, by the bootstraplogic circuitry, a local environment comprise operations to configurethe LD_Library_Path and Path environment variables. In Example 45, themachine-readable medium of Example 38, wherein operations to initiate,by the bootstrap logic circuitry, execution of the local filesystemcomprises operations to execute a filesystem service executable. InExample 46, the machine-readable medium of Example 38, wherein the localdata storage comprises a random-access memory (RAM) disk. In Example 47,the machine-readable medium of Example 38, wherein the one or morecompute nodes comprise nodes of a high-performance computing (HPC)system. In Example 48, the machine-readable medium of Example 38,further comprising operations to automatically pre-configure the imagefile, wherein automatic pre-configuration creates the image file andcorresponding data for the image file. In Example 49, themachine-readable medium of Example 38, further comprising operations toautomatically, by a pre-configuration logic circuitry, determine filedependencies by inspection of RPath, LD_Library_Path, RunPath, andsystem default locations and to optionally append user-identified filesto the image file.

Example 50 is an apparatus to access shared files, the apparatuscomprising: a means for accessing, by a first compute node associatedwith a user session, an image file of a global filesystem, the imagefile comprising a first set of one or more files associated with theuser session and a second set of one or more files, the execution of thefirst set depending on the second set of one or more files; a means forstoring, by the first compute node, the image file in local data storageof more than one compute node of a spanning tree, the spanning tree ofcompute nodes comprising one or more compute nodes associated with theuser session, wherein the image file is unpacked into a plurality ofunpacked files based on data for the image file in the more than onecompute nodes of the spanning tree, the unpacked filed comprising thefirst set of one more files and the second set of one more files; ameans for configuring, by the first compute node, a local filesystemservice environment of the more than one compute node in the spanningtree, wherein the configured local file service environment is toidentify a location in local memory of each of the unpacked files; and ameans for initiating, by the first compute node after the image file isunpacked, execution of the local filesystem service in the more than onecompute nodes of the spanning tree. In Example 51, the apparatus ofExample 50, further comprising a means for instructing, by the firstcompute node, the local filesystem service in each compute node in thespanning tree, to install a filesystem service configuration to identifythe first set of files and the second set of files as a local cache ofthe image file from the global filesystem. In Example 52, the apparatusof Example 50, wherein the means for instructing, by the first computenode, the local filesystem service to install a filesystem serviceconfiguration comprises storing the filesystem service configuration ata predetermined location, the filesystem service to automaticallyinstall the filesystem service configuration if located at thepredetermined location. In Example 53, the apparatus of Example 50,wherein the means for instructing, by the first compute node, the localfilesystem service to install a filesystem service configurationcomprises a means for providing a location of the filesystem serviceconfiguration in a command line. In Example 54, the apparatus of Example50, wherein the means for instructing, by the first compute node, thelocal filesystem service to install a filesystem service configurationcomprises a means for providing the filesystem service configurationwithin a command. In Example 55, the apparatus of Example 50, furthercomprising the means for initiating the bootstrap logic circuitry byexecution of a bootstrapper executable on the unpacked files. In Example56, the apparatus of Example 50, wherein the means for configuring, bythe first compute node, a local environment comprises a means forconfiguring the LD_Library_Path and Path environment variables. InExample 57, the apparatus of Example 50, wherein the means forinitiating, by the first compute node, execution of the local filesystemcomprises a means for executing a filesystem service executable. InExample 58, the apparatus of Example 50, wherein the local data storagecomprises a random-access memory (RAM) disk. In Example 59, theapparatus of Example 50, wherein the one or more compute nodes comprisenodes of a high performance computing (HPC) system. In Example 60, theapparatus of Example 50, further comprising a means for automaticallypre-configuring the image file, wherein automatic pre-configurationcreates the image file and corresponding data for the image file. InExample 61, the apparatus of Example 50, further comprising a means forautomatically, by a pre-configuration logic circuitry, determining filedependencies by inspection of RPath, LD_Library_Path, RunPath, andsystem default locations and to optionally append user-identified filesto the image file.

What is claimed is:
 1. An apparatus to access shared files, theapparatus comprising: memory: and logic circuitry to: access an imagefile of a global filesystem by a master compute node, the image filecomprising a first set of one or more files associated with a usersession and a second set of one or more files, the execution of thefirst set depending on the second set of one or more files; store theimage file in local data storage of more than one compute node of aspanning tree, the spanning tree of compute nodes comprising one or morecompute nodes associated with the user session, wherein the image fileis unpacked into a plurality of unpacked files based on data for theimage file in the more than one compute nodes of the spanning tree, theunpacked files comprising the first set of one or more files and thesecond set of one or more files; configure one or more environmentvariables of a local filesystem service environment of the more than onecompute node in the spanning tree, wherein the configured one or moreenvironment variables of the local file service environment is toidentify a location in local memory of each of the unpacked files; andinitiate, after the image file is unpacked, execution of a localfilesystem service in the more than one compute nodes of the spanningtree.
 2. The apparatus of claim 1, wherein the logic circuitry isconfigured to instruct the local filesystem service in each compute nodein the spanning tree, to install a filesystem service configuration toidentify the first set of files and the second set of files as a localcache of the image file from the global filesystem.
 3. The apparatus ofclaim 1, wherein the logic circuitry is configured to initiate abootstrap logic circuitry by execution of a bootstrapper executable onthe unpacked files.
 4. The apparatus of claim 1, wherein the one or morecompute nodes comprise nodes of a high-performance computing (HPC)system.
 5. The apparatus of claim 1, wherein the logic circuitry isconfigured to automatically pre-configure the image file, whereinautomatic pre-configuration creates the image file and correspondingdata for the image file.
 6. A method to access shared files, the methodcomprising: accessing, by a bootstrap logic circuitry of a mastercompute node associated with a user session, an image file of a globalfilesystem, the image file comprising a first set of one or more filesassociated with the user session and a second set of one or more files,the execution of the first set depending on the second set of one ormore files; storing, by the bootstrap logic circuitry, the image file inlocal data storage of more than one compute node of a spanning tree, thespanning tree of compute nodes comprising one or more compute nodesassociated with the user session, wherein the image file is unpackedinto a plurality of unpacked files based on data for the image file inthe more than one compute nodes of the spanning tree, the unpacked filescomprising the first set of one or more files and the second set of oneor more files; configuring, by the bootstrap logic circuitry, one ormore environment variables of a local filesystem service environment ofthe more than one compute node in the spanning tree, wherein theconfigured one or more environment variables of the local file serviceenvironment is to identify a location in local memory of each of theunpacked files; and initiating, by the bootstrap logic circuitry afterthe image file is unpacked, execution of a local filesystem service inthe more than one compute nodes of the spanning tree.
 7. The method ofclaim 6, further comprising instructing, by the bootstrap logiccircuitry, the local filesystem service in each compute node in thespanning tree, to install a filesystem service configuration to identifythe first set of files and the second set of files as a local cache ofthe image file from the global filesystem.
 8. The method of claim 7,wherein instructing, by the bootstrap logic circuitry, the localfilesystem service to install a filesystem service configurationcomprises storing the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration if located at the predeterminedlocation.
 9. The method of claim 7, wherein instructing, by thebootstrap logic circuitry, the local filesystem service to install afilesystem service configuration comprises providing a location of thefilesystem service configuration in a command line.
 10. The method ofclaim 7, wherein instructing, by the bootstrap logic circuitry, thelocal filesystem service to install a filesystem service configurationcomprises providing the filesystem service configuration within acommand.
 11. The method of claim 6, wherein configuring, by thebootstrap logic circuitry, the local environment comprises configuringthe LD_LIBRARY_PATH and PATH environment variables.
 12. A system toaccess shared files, the system comprising: more than one compute nodescoupled, wherein one of the compute nodes comprises a functional blockof a root compute node to: access an image file of a global filesystem,the image file comprising a first set of one or more files associatedwith a user session and a second set of one or more files, the executionof the first set depending on the second set of one or more files; storethe image file in local data storage of more than one compute node of aspanning tree, the spanning tree of compute nodes comprising one or morecompute nodes associated with the user session, wherein the image fileis unpacked into a plurality of unpacked files based on data for theimage file in the more than one compute nodes of the spanning tree, theunpacked files comprising the first set of one or more files and thesecond set of one or more files; configure one or more environmentvariables of a local filesystem service environment of the more than onecompute node in the spanning tree, wherein the configured one or moreenvironment variables of the local file service environment is toidentify a location in local memory of each of the unpacked files; andinitiate, after the image file is unpacked, execution of a localfilesystem service in the more than one compute nodes of the spanningtree.
 13. The system of claim 12, wherein the functional block isconfigured to instruct the local filesystem service in each compute nodein the spanning tree, to install a filesystem service configuration toidentify the first set of files and the second set of files as a localcache of the image file from the global filesystem.
 14. The system ofclaim 13, wherein the functional block is configured to initiate abootstrap logic circuitry by execution of a bootstrapper executable onthe unpacked files.
 15. The system of claim 13, wherein the functionalblock is configured to execute a filesystem service executable.
 16. Thesystem of claim 13, wherein the functional block is configured toautomatically pre-configure the image file, wherein automaticpre-configuration creates the image file and corresponding data for theimage file.
 17. A non-transitory machine-readable medium containinginstructions, which when executed by a processor, cause the processor toperform operations, the operations to: access, by a bootstrap logiccircuitry of a master compute node associated with a user session, animage file of a global filesystem, the image file comprising a first setof one or more files associated with the user session and a second setof one or more files, the execution of the first set depending on thesecond set of one or more files; store, by the bootstrap logiccircuitry, the image file in local data storage of more than one computenode of a spanning tree, the spanning tree of compute nodes comprisingone or more compute nodes associated with the user session, wherein theimage file is unpacked into a plurality of unpacked files based on datafor the image file in the more than one compute nodes of the spanningtree, the unpacked files comprising the first set of one or more filesand the second set of one or more files; configure, by the bootstraplogic circuitry, one or more environment variables of a local filesystemservice environment of the more than one compute node in the spanningtree, wherein the configured one or more environment variables of thelocal file service environment is to identify a location in local memoryof each of the unpacked files; and initiate, by the bootstrap logiccircuitry after the image file is unpacked, execution of a localfilesystem service in the more than one compute nodes of the spanningtree.
 18. The machine-readable medium of claim 17, further comprisingoperations to instruct, by the bootstrap logic circuitry, the localfilesystem service in each compute node in the spanning tree, to installa filesystem service configuration to identify the first set of filesand the second set of files as a local cache of the image file from theglobal filesystem.
 19. The machine-readable medium of claim 17, whereinoperations to instruct, by the bootstrap logic circuitry, the localfilesystem service to install a filesystem service configurationcomprises operations to store the filesystem service configuration at apredetermined location, the filesystem service to automatically installthe filesystem service configuration if located at the predeterminedlocation.
 20. The machine-readable medium of claim 17, whereinoperations to instruct, by the bootstrap logic circuitry, the localfilesystem service to install a filesystem service configurationcomprises operations to provide a location of the filesystem serviceconfiguration in a command line.
 21. The machine-readable medium ofclaim 17, wherein operations to instruct, by the bootstrap logiccircuitry, the local filesystem service to install a filesystem serviceconfiguration comprises operations to provide the filesystem serviceconfiguration within a command.
 22. An apparatus to access shared files,the apparatus comprising: a means for accessing, by a master computenode associated with a user session, an image file of a globalfilesystem, the image file comprising a first set of one or more filesassociated with the user session and a second set of one or more files,the execution of the first set depending on the second set of one ormore files; a means for storing, by the master compute node, the imagefile in local data storage of more than one compute node of a spanningtree, the spanning tree of compute nodes comprising one or more computenodes associated with the user session, wherein the image file isunpacked into a plurality of unpacked files based on data for the imagefile in the more than one compute nodes of the spanning tree, theunpacked files comprising the first set of one or more files and thesecond set of one or more files; a means for configuring, by the mastercompute node, one or more environment variables of a local filesystemservice environment of the more than one compute node in the spanningtree, wherein the configured one or more environment variables of thelocal file service environment is to identify a location in local memoryof each of the unpacked files; and a means for initiating, by the mastercompute node after the image file is unpacked, execution of a localfilesystem service in the more than one compute nodes of the spanningtree.
 23. The apparatus of claim 22, further comprising a means forinstructing, by the master compute node, the local filesystem service ineach compute node in the spanning tree, to install a filesystem serviceconfiguration to identify the first set of files and the second set offiles as a local cache of the image file from the global filesystem. 24.The apparatus of claim 22, wherein the local data storage comprises arandom-access memory (RAM) disk.
 25. The apparatus of claim 22, furthercomprising a means for automatically pre-configuring the image file,wherein automatic pre-configuration creates the image file andcorresponding data for the image file.